package com.lagou.initializer;

import com.lagou.config.AppConfig;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;

/**
 * @author 胡益文
 * @since 2021/9/15 17:57
 */
public class MyWebApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) {
        // Load Spring web application configuration
        if(servletContext.getServletRegistration("app")==null){
            //通过注解的方式初始化Spring的上下文，IOC容器
            AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
            //注册spring的配置类（替代传统项目中xml的configuration）
            ac.register(AppConfig.class);
            ac.refresh();
            //基于java代码的方式初始化DispatcherServlet
            DispatcherServlet servlet = new DispatcherServlet(ac);
            ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet);
            registration.setLoadOnStartup(1);
            registration.addMapping("/app/*");
        }

    }
}
